#ifndef __SIPINVITESESSION_HPP__
#define __SIPINVITESESSION_HPP__

#include "WTSXSipService/SipWTSXServiceItf.hpp"
#include "WTSXSipService/SipDlgSessionBase.hpp"

namespace wtsxsip{


class WTSX_SIPSRV_PUBLIC CSipInviteSession : 
    public CSipDlgSessionBase
{
public:

    CSipInviteSession(CSipSessionMgr& mgr, uint32_t id, wtsip::ISipDialogBase& dlg, const wtsip::SUri& tar);

    CSipInviteSession(CSipSessionMgr& mgr, uint32_t id, wtsip::ISipDialogBase& dlg, 
        const wtsip::SUri& tar, ISipTranSession& tran);

    virtual ~CSipInviteSession();

    virtual bool send(SHeaders& headers, const SMsgBodyBase& body, uint32_t& id);

    virtual bool messageDress(wtsip::CSipMessage& msg);

    //////////////////////// wtsip::Dialog Handle ///////////////////////

    virtual bool onRequest(ISipTranSession& tran, const SHeaders& headers, const SMsgBodyBase& body);

    virtual bool onState(ISipTranSession& tran, const ISipTranSession::ETranSessionState newState);

};



}

#endif


